package cn.itcast.test;

import cn.itcast.domain.ResultInfo;
import cn.itcast.domain.cargo.*;
import org.springframework.util.StringUtils;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class demo {

//    @Override
//    public ResultInfo checkPackingInfo(List<String> ids) {
//        ResultInfo resultInfo = new ResultInfo();
//        //查询所有的报运单
//        ExportExample exportExample = new ExportExample();
//        exportExample.createCriteria().andIdIn(ids);
//        List<Export> exportList = exportDao.selectByExample(exportExample);
//
//        //判断查询的报运单列表是否为空
//        if (exportList==null||exportList.size()==0||exportList.size()!=ids.size()) {
//            resultInfo.setSuccess(false);
//            resultInfo.setMsg("所选报运单不存在！");
//            return resultInfo;
//        }
//
////        //判断报运单列表是否只有1个
////        if (exportList.size()==1){
////            //检查报运单状态是否已报运
////            if (exportList.get(0).getState()==1){
////                resultInfo.setSuccess(true);
////                resultInfo.setData(exportList);
////            }else {
////                resultInfo.setSuccess(false);
////                resultInfo.setMsg("所选报运单未上报！");
////            }
////            return resultInfo;
////        }else {
//
//        //获得列表第一个元素的装运港、目的港、收货人
//        //(shipment_port、destination_port、consignee)
//        Export export = exportList.get(0);
//
//        String shipmentPort = export.getShipmentPort();
//        String destinationPort = export.getDestinationPort();
//        String consignee = export.getConsignee();
//
//        //检查装运港、目的港、收货人是否为空
//        if (StringUtils.isEmpty(shipmentPort)
//                ||StringUtils.isEmpty(destinationPort)
//                ||StringUtils.isEmpty(consignee)){
//            resultInfo.setSuccess(false);
//            resultInfo.setMsg("所选报运单的装运港、目的港、收货人信息违规！");
//            return resultInfo;
//        }
//
//        //验证报运单列表是否合规
//        //遍历报运单
//        for (Export export1 : exportList) {
//            //检查报运单状态是否都是已报运
//            if (export1.getState()!=1){
//                resultInfo.setSuccess(false);
//                resultInfo.setMsg("所选报运单未上报！");
//                return resultInfo;
//            }
//
//            //检查装运港、目的港、收货人是否都一致
//            String shipmentPort1 = export1.getShipmentPort();
//            String destinationPort1 = export1.getDestinationPort();
//            String consignee1 = export1.getConsignee();
//
//            if (!(shipmentPort.equals(shipmentPort1)
//                    &&destinationPort.equals(destinationPort1)
//                    &&consignee.equals(consignee1))){
//                resultInfo.setSuccess(false);
//                resultInfo.setMsg("所选报运单的装运港、目的港、收货人不一致！");
//                return resultInfo;
//            }
//        }
//
////        }
//
//        //报运表检查完成，开始处理数据
//        /*
//            待处理的数据：
//            报运单ID集合  export_ids
//            报运合同号  export_nos
//            总体积  total_volume
//            总净重  net_weights
//            总毛重  gross_weights
//            装箱费用  packing_money  总毛重*520
//            状态  state
//         */
//
//        //创建装箱信息对象
//        PackingList packingList = new PackingList();
//        StringBuilder exportIds = new StringBuilder();
//        StringBuilder exportNos = new StringBuilder();
//
//        //购销合同ids
//        StringBuilder contractIds = new StringBuilder();
//
//        //处理报运单相关数据
//        //遍历报运单列表
//        for (Export export1 : exportList) {
//            //报运单ID集合  export_ids
//            exportIds.append(export1.getId()).append(",");
//            //报运合同号  export_nos
//            exportNos.append(export1.getCustomerContract()).append(",");
//            //获取所有的购销合同id
//            contractIds.append(export1.getContractIds()).append(",");
//        }
//        packingList.setExportIds(exportIds.substring(0,exportIds.length()-1));
//        packingList.setExportNos(exportNos.substring(0,exportNos.length()-1));
//
//        contractIds.substring(0, contractIds.length() - 1);
//        List<String> contractIdList = Arrays.stream(contractIds.toString().split(",")).map(i -> i)
//                .collect(Collectors.toList());
//
//        //通过报运单id查询货物
//        ContractProductExample contractProductExample = new ContractProductExample();
//        contractProductExample.createCriteria().andContractIdIn(contractIdList);
//        List<ContractProduct> contractProducts = contractProductDao.selectByExample(contractProductExample);
//
//        //通过报运单id查询附件
//        ExtCproductExample extCproductExample = new ExtCproductExample();
//        extCproductExample.createCriteria().andContractIdIn(contractIdList);
//        List<ExtCproduct> extCproducts = extCproductDao.selectByExample(extCproductExample);
//
//        BigDecimal totalVolume = new BigDecimal(0);
//        BigDecimal  netWeights = new BigDecimal(0);
//        BigDecimal  grossWeights = new BigDecimal(0);
//        BigDecimal  packingMoney = new BigDecimal(0);
//        //遍历货物列表，获取相应信息
//        for (ContractProduct contractProduct : contractProducts) {
//            //总体积  total_volume
//            contractProduct.get
//            //总净重  net_weights
//
//            //总毛重  gross_weights
//        }
//
//
//        //遍历附件列表，获取相应信息
//        //总体积  total_volume
//
//        //总净重  net_weights
//
//        //总毛重  gross_weights
//
//
//        //状态  state
//
//        //装箱费用  packing_money  总毛重*520
//
//        //返回resultInfo
//    }
}
